package com.acceptable.qucun.generic.util.result.success;

import java.util.HashMap;
import java.util.Map;

public enum UserSuccessResult implements BaseSuccessResult{
    // 首位为1 代表成功 次位为0 用户相关 6位

    // 验证码相关
    VERIFY_CODE_GET_SUCCESS("100000", "验证码获取成功。"),

    // 注册相关
    REGISTER_SUCCESS("100100", "注册成功。"),
    REGISTER_EMAIL_BOUND_SUCCESS("100110", "邮箱验证成功，该邮箱存在。"),

    // 登录相关
    LOGIN_SUCCESS("100200", "登录成功。"),

    // 密码相关
    RESET_PASSWORD_SUCCESS("100300", "密码重置成功。"),
    CHANGE_PASSWORD_SUCCESS("10350", "密码修改成功。"),

    // 登出相关
    LOGOUT_SUCCESS("100400", "当前账号已登出。"),

    // 获取用户信息
    USER_INFO_SUCCESS("100500", "您的信息查询成功。"),

    // 头像
    UPDATE_INFO_SUCCESS("100600", "您的常规信息修改成功。"),
    UPDATE_IMG_SUCCESS("100700", "头像修改成功。"),

    // 邮箱换绑
    CHANGE_EMAIL_VERIFY_SUCCESS("100800", "邮箱验证成功。"),
    CHANGE_EMAIL_SUCCESS("100900", "邮箱换绑成功。"),

    // 注销帐号
    DROP_ACCOUNT_SUCCESS("101000", "本帐号注销成功。");

    private String code;
    private String msg;
    private static Map<String, UserSuccessResult> resultMap;

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    UserSuccessResult(String code, String msg){
        this.code = code;
        this.msg = msg;
    }

    private static void createMap(){
        if(resultMap == null){
            resultMap = new HashMap<>();
        }
        // 验证
        resultMap.put(VERIFY_CODE_GET_SUCCESS.code, VERIFY_CODE_GET_SUCCESS);

        // 登录
        resultMap.put(LOGIN_SUCCESS.code, LOGIN_SUCCESS);

        // 注册
        resultMap.put(REGISTER_SUCCESS.code, REGISTER_SUCCESS);

        // 邮箱绑定
        resultMap.put(REGISTER_EMAIL_BOUND_SUCCESS.code, REGISTER_EMAIL_BOUND_SUCCESS);

        // 密码
        {
            resultMap.put(RESET_PASSWORD_SUCCESS.code, RESET_PASSWORD_SUCCESS);
            resultMap.put(CHANGE_PASSWORD_SUCCESS.code, CHANGE_PASSWORD_SUCCESS);
        }

        // 退出
        {
            resultMap.put(LOGOUT_SUCCESS.code, LOGOUT_SUCCESS);
        }

        // 用户信息
        {
            resultMap.put(USER_INFO_SUCCESS.code, USER_INFO_SUCCESS);
        }

        // 头像
        {
            resultMap.put(UPDATE_INFO_SUCCESS.code, UPDATE_INFO_SUCCESS);
            resultMap.put(UPDATE_IMG_SUCCESS.code, UPDATE_IMG_SUCCESS);
        }

        // 邮箱换绑
        {
            resultMap.put(CHANGE_EMAIL_VERIFY_SUCCESS.code, CHANGE_EMAIL_VERIFY_SUCCESS);
            resultMap.put(CHANGE_EMAIL_SUCCESS.code, CHANGE_EMAIL_SUCCESS);
        }

        // 帐号注销
        {
            resultMap.put(DROP_ACCOUNT_SUCCESS.code, DROP_ACCOUNT_SUCCESS);
        }
    }

    public static BaseSuccessResult getSuccessResultByCode(String code){
        createMap();
        return resultMap.get(code);
    }

    public static Map<String, UserSuccessResult> getResultMap(){
        createMap();
        return resultMap;
    }
}
